#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <errno.h>
#include <string.h>
// malloc
// free 
// calloc
// realloc

int main()
{
    int *p = malloc(10 * sizeof(int)); // 此处不需要强转
    if(p == NULL){   // 如果申请失败,输出错误原因
        printf("%s \n", strerror(errno)); // 报错 Not enough space， 10 替换成 INT_MAX，使用INT_MAX 需要引入limits.h
    }else {
        for(int i=0;i<10;i++){
            p[i] = i;
        }

        for (int i = 0; i < 10; i++)
        {
            printf("%d ",p[i]);
        }

        printf("\n");
    }
    // 当动态申请的空间不再使用的时候，就应该还给操作系统
    free(p); // free之后 p仍保留着原来的地址
    p = NULL; // 所以此处将p置为NULL
    return 0;
}